package main

import "fmt"

/*
	函数也是一种数据类型，可以进行传输传递
*/
func sum1(a int, b int) int {
	return a + b
}

// 使用函数 作为形参
func test2(t func(int, int) int, a int, b int) int {
	return t(a, b)
}

// 定义函数类型
type f func(int, int) int

func test1(f1 f, a int, b int) int {
	return f1(a, b)
}

func main() {
	myFunc := sum1

	fmt.Printf("%T\n", myFunc)     // func(int, int) int
	fmt.Println(myFunc(1, 2))      // 3
	fmt.Println(test2(sum1, 1, 2)) // 3
	fmt.Println(test1(sum1, 1, 2)) // 3

}
